#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
#include<stdlib.h>

int main()
{
  printf("I am a process,pid:%d\n",getpid());
  putenv("MYVAL=bbbbbbbbbbbbbbbbbbbbbbbbbbbb");
  char* const env[]={(char*)"shuju=zbw",(char*)"wangzheng=shabby",NULL};
  pid_t id=fork();
  if(id==0)
  {
    sleep(2);
    printf("exec begin ... \n");
    
    execle("./test","test",NULL,env);

    printf("exec end ... \n");
    exit(1);
  }

  pid_t rid=waitpid(id,NULL,0);
  if(rid>0)
  {
    printf("wait success!\n");
  }
  return 0;
}
//int main()
//{
//  printf("I am a process,pid:%d\n",getpid());
//  pid_t id=fork();
//  if(id==0)
//  {
//    sleep(2);
//    char* const argv[]={(char*)"ls",(char*)"-a",(char*)"-l",NULL};
//    printf("exec begin ... \n");
//    
//    //execv("/usr/bin/ls",argv);
//    execvp("ls",argv);
//
//    //execlp("ls","ls","-a","-l",NULL);
//    
//    printf("exec end ... \n");
//    exit(1);
//  }
//
//  pid_t rid=waitpid(id,NULL,0);
//  if(rid>0)
//  {
//    printf("wait success!\n");
//  }
//  return 0;
//}
////int main()
//{
//  printf("I am a process,pid:%d\n",getpid());
//
//  pid_t id=fork();
//  if(id==0)
//  {
//    //child process
//    sleep(3);
//    printf("exec begin ... \n");
//    
//    execl("/usr/bin/top","top",NULL);
//    //execl("/usr/bin/ls","ls","-a","-l",NULL);
//    
//    printf("exec end ... \n");
//    exit(1);
//  }
//  //father process
//  pid_t rid=waitpid(id,NULL,0);
//  if(rid>0)
//  {
//    printf("wait success\n");
//  }
//  return 0;
//}
//



//int main()
//{
//  printf("I am a process,pid:%d\n",getpid());
//  printf("exec begin ... \n");
//  
//  execl("/usr/bin/ls","ls","-a","-l",NULL);
//  
//  //execl("/usr/bin/top","top",NULL);
//  //
//  printf("exec end ... \n");
//  return 0;
//}
